#ifndef _HM_QUEUE_H_
#define _HM_QUEUE_H_

#include <list>
#include <string>

template <typename T>
class HM_Queue
{
public:
    void push(const T&item) {qlist.push_back(item);}
    void pop(){
        if (qlist.size() == 0)
        {
            throw std::string("queue is empty");
        }
        qlist.pop_front();
    }

    const T front(){return qlist.front();}
    int size() const {return qlist.size();}
    bool empty() const {return qlist.empty();}
    HM_Queue(/* args */){}
    ~HM_Queue(){}

private:
    std::list<T> qlist;
};

#endif //_HM_QUEUE_H_